package main.java.tablero;

import java.util.Collection;
import java.util.Iterator;

import main.java.fases.Jugador;




public class Partida {
	
	@SuppressWarnings("unused")
	private Integer numJugadores;
	/**
	 * @uml.property  name="tablero"
	 * @uml.associationEnd  
	 */
	private Tablero tablero;

	/**
	 * Getter of the property <tt>tablero</tt>
	 * @return  Returns the tablero.
	 * @uml.property  name="tablero"
	 */
	public Tablero getTablero() {
		return tablero;
	}

	/**
	 * Setter of the property <tt>tablero</tt>
	 * @param tablero  The tablero to set.
	 * @uml.property  name="tablero"
	 */
	public void setTablero(Tablero tablero) {
		this.tablero = tablero;
	}

	/**
	 * @uml.property   name="jugador"
	 * @uml.associationEnd   multiplicity="(1 4)" aggregation="shared" inverse="partida:Diagrama2.Jugador"
	 */
	private Collection<Jugador>  jugador;

	/** 
	 * Getter of the property <tt>jugador</tt>
	 * @return  Returns the jugador.
	 * @uml.property  name="jugador"
	 */
	public Collection<Jugador>  getJugador() {
		return jugador;
	}

	/**
	 * Returns an iterator over the elements in this collection. 
	 * @return  an <tt>Iterator</tt> over the elements in this collection
	 * @see java.util.Collection#iterator()
	 * @uml.property  name="jugador"
	 */
	public Iterator<Jugador>  jugadorIterator() {
		return jugador.iterator();
	}

	/**
	 * Returns <tt>true</tt> if this collection contains no elements.
	 * @return  <tt>true</tt> if this collection contains no elements
	 * @see java.util.Collection#isEmpty()
	 * @uml.property  name="jugador"
	 */
	public boolean isJugadorEmpty() {
		return jugador.isEmpty();
	}

	/**
	 * Returns <tt>true</tt> if this collection contains the specified element. 
	 * @param element  whose presence in this collection is to be tested.
	 * @see java.util.Collection#contains(Object)
	 * @uml.property  name="jugador"
	 */
	public boolean containsJugador(Jugador jugador) {
		return this.jugador.contains(jugador);
	}

	/**
	 * Returns <tt>true</tt> if this collection contains all of the elements in the specified collection.
	 * @param elements  collection to be checked for containment in this collection.
	 * @see java.util.Collection#containsAll(Collection)
	 * @uml.property  name="jugador"
	 */
	public boolean containsAllJugador(Collection<Jugador>  jugador) {
		return this.jugador.containsAll(jugador);
	}

	/**
	 * Returns the number of elements in this collection.
	 * @return  the number of elements in this collection
	 * @see java.util.Collection#size()
	 * @uml.property  name="jugador"
	 */
	public int jugadorSize() {
		return jugador.size();
	}

	/**
	 * Returns all elements of this collection in an array.
	 * @return  an array containing all of the elements in this collection
	 * @see java.util.Collection#toArray()
	 * @uml.property  name="jugador"
	 */
	public Jugador[] jugadorToArray() {
		return (Jugador[]) jugador.toArray(new Jugador[jugador.size()]);
	}

	/**
	 * Returns an array containing all of the elements in this collection;  the runtime type of the returned array is that of the specified array.
	 * @param a  the array into which the elements of this collection are to be stored.
	 * @return  an array containing all of the elements in this collection
	 * @see java.util.Collection#toArray(Object[])
	 * @uml.property  name="jugador"
	 */
	public Jugador[] jugadorToArray(Jugador[] jugador) {
		return (Jugador[]) this.jugador.toArray(jugador);
	}

	/**
	 * Ensures that this collection contains the specified element (optional operation). 
	 * @param element  whose presence in this collection is to be ensured.
	 * @see java.util.Collection#add(Object)
	 * @uml.property  name="jugador"
	 */
	public boolean addJugador(Jugador jugador) {
		return this.jugador.add(jugador);
	}

	/** 
	 * Setter of the property <tt>jugador</tt>
	 * @param jugador  the jugador to set.
	 * @uml.property  name="jugador"
	 */
	public void setJugador(Collection<Jugador>  jugador) {
		this.jugador = jugador;
	}

	/**
	 * Removes a single instance of the specified element from this collection, if it is present (optional operation).
	 * @param element  to be removed from this collection, if present.
	 * @see java.util.Collection#add(Object)
	 * @uml.property  name="jugador"
	 */
	public boolean removeJugador(Jugador jugador) {
		return this.jugador.remove(jugador);
	}

	/**
	 * Removes all of the elements from this collection (optional operation).
	 * @see java.util.Collection#clear()
	 * @uml.property  name="jugador"
	 */
	public void clearJugador() {
		this.jugador.clear();
	}

	/**
	 * @uml.property   name="tablero1"
	 * @uml.associationEnd   aggregation="shared" inverse="partida2:tablero.Tablero"
	 */
	private Tablero tablero1;

	/**
	 * Getter of the property <tt>tablero1</tt>
	 * @return  Returns the tablero1.
	 * @uml.property  name="tablero1"
	 */
	public Tablero getTablero1() {
		return tablero1;
	}

	/**
	 * Setter of the property <tt>tablero1</tt>
	 * @param tablero1  The tablero1 to set.
	 * @uml.property  name="tablero1"
	 */
	public void setTablero1(Tablero tablero1) {
		this.tablero1 = tablero1;
	}

	/**
	 * @uml.property   name="jugador1"
	 * @uml.associationEnd   aggregation="shared" inverse="partida1:Diagrama2.Jugador"
	 */
	private Jugador jugador1;

	/**
	 * Getter of the property <tt>jugador1</tt>
	 * @return  Returns the jugador1.
	 * @uml.property  name="jugador1"
	 */
	public Jugador getJugador1() {
		return jugador1;
	}

	/**
	 * Setter of the property <tt>jugador1</tt>
	 * @param jugador1  The jugador1 to set.
	 * @uml.property  name="jugador1"
	 */
	public void setJugador1(Jugador jugador1) {
		this.jugador1 = jugador1;
	}

	/**
	 * @uml.property   name="jugador2"
	 * @uml.associationEnd   multiplicity="(1 4)" aggregation="shared" inverse="partida3:Diagrama2.Jugador"
	 */
	private Collection<Jugador> jugador2;

	/**
	 * Getter of the property <tt>jugador2</tt>
	 * @return  Returns the jugador2.
	 * @uml.property  name="jugador2"
	 */
	public Collection<Jugador> getJugador2() {
		return jugador2;
	}

	/**
	 * Setter of the property <tt>jugador2</tt>
	 * @param jugador2  The jugador2 to set.
	 * @uml.property  name="jugador2"
	 */
	public void setJugador2(Collection<Jugador> jugador2) {
		this.jugador2 = jugador2;
	}

}
